home *** CD-ROM | disk | FTP | other *** search
/ GameStar 1998 November (Bonus) / GAMESTAR11B.ISO / ENCYC99 / MM / T620277A.DCR / Scripts_2_Class HorizontalSlider.ls < prev    next >
Encoding:
Text File  |  1998-06-29  |  2.7 KB  |  122 lines

  1. property cursorGod, SlidThing, objectRect, sliderMap, grabberSprite, firstGrabber, lastGrabber, mouseIsDown, clickedOnGrabber
  2.  
  3. on reDraw me, xInt
  4.   moveSlider(me, fromSlidThing(me, xInt))
  5. end
  6.  
  7. on mouseEvent me, xEvent, xLoc
  8.   case xEvent of
  9.     #mouseDown:
  10.       if rollOver(grabberSprite) then
  11.         set clickedOnGrabber to 1
  12.       end if
  13.       set mouseIsDown to 1
  14.     #mouseDrag:
  15.       set mouseIsDown to 1
  16.     #mouseUp:
  17.       set clickedOnGrabber to 0
  18.       set mouseIsDown to 0
  19.     #mouseGone:
  20.       set clickedOnGrabber to 0
  21.       set mouseIsDown to 0
  22.   end case
  23. end
  24.  
  25. on areYouThere me, xLoc
  26.   shouldIMove(me, xLoc)
  27.   if inside(xLoc, objectRect) then
  28.     return 1
  29.   end if
  30.   return 0
  31. end
  32.  
  33. on new me, xRect, xSprite
  34.   set objectRect to xRect
  35.   set grabberSprite to xSprite
  36.   set grabberRect to the rect of sprite grabberSprite
  37.   puppetSprite(grabberSprite, 1)
  38.   return me
  39. end
  40.  
  41. on linkUp me, xSlidThing
  42.   set SlidThing to xSlidThing
  43.   makeMap(me)
  44.   updateSlider(SlidThing)
  45. end
  46.  
  47. on subscribe me, xCursor
  48.   set cursorGod to xCursor
  49.   subscribe(cursorGod, me)
  50. end
  51.  
  52. on shouldIMove me, xLoc
  53.   if mouseIsDown then
  54.     if rollOver(grabberSprite) then
  55.       set clickedOnGrabber to 1
  56.     end if
  57.     whereShouldIGo(me, xLoc)
  58.   end if
  59. end
  60.  
  61. on whereShouldIGo me, xLoc
  62.   set thisH to the locH of xLoc
  63.   if thisH < firstGrabber then
  64.     set thisH to firstGrabber
  65.   else
  66.     if thisH > lastGrabber then
  67.       set thisH to lastGrabber
  68.     end if
  69.   end if
  70.   toSlidThing(me, thisH)
  71. end
  72.  
  73. on moveSlider me, xInt
  74.   set the locH of sprite grabberSprite to xInt
  75.   updateStage()
  76. end
  77.  
  78. on makeMap me
  79.   set slidValues to getMapInfo(SlidThing)
  80.   set slidFirst to getAt(slidValues, 1)
  81.   set slidLast to getAt(slidValues, 2)
  82.   initGrabberPoints(me)
  83.   set slidSize to slidLast - slidFirst
  84.   set grabberSize to lastGrabber - firstGrabber
  85.   set mapRatio to float(slidSize) / grabberSize
  86.   set sliderMap to [:]
  87.   repeat with i = 0 to grabberSize
  88.     set thisSlid to integer((i * mapRatio) + slidFirst)
  89.     set thisGrabber to i + firstGrabber
  90.     addProp(sliderMap, thisSlid, thisGrabber)
  91.   end repeat
  92.   sort(sliderMap)
  93. end
  94.  
  95. on fromSlidThing me, xInt
  96.   return getAt(sliderMap, findPosNear(sliderMap, xInt))
  97. end
  98.  
  99. on toSlidThing me, xInt
  100.   if clickedOnGrabber then
  101.     hardSlide(SlidThing, getOne(sliderMap, xInt))
  102.   else
  103.     softSlide(SlidThing, getOne(sliderMap, xInt))
  104.   end if
  105. end
  106.  
  107. on initGrabberPoints me
  108.   set grabberMember to the member of sprite grabberSprite
  109.   set leftOff to the locH of the regPoint of grabberMember
  110.   set rightOff to the width of sprite grabberSprite - leftOff
  111.   set firstGrabber to the left of objectRect + leftOff
  112.   set lastGrabber to the right of objectRect - rightOff
  113. end
  114.  
  115. on turnOnGrabber me
  116.   nothing()
  117. end
  118.  
  119. on turnOffGrabber me
  120.   nothing()
  121. end
  122.